As is known to those of skill in the art, parallel computing is a type of computing architecture in which several processing units execute or process work in parallel to complete a task. Specifically the task is divided into smaller components, which can be executed by the processing units in parallel. In many cases, using a parallel computing architecture can significantly reduce the amount of time to complete a task compared to using a serial computing architecture (e.g. a single processing unit). However, parallel computing architectures can create inefficiencies in some cases when different processing units are completing similar tasks independently.
The embodiments described below are provided by way of example only and are not limiting of implementations which solve any or all of the disadvantages of known parallel computing architectures.